/*
 * Manejo mas detallado de las caracteristicas de un carro!!
 */
package vehiculo;

import java.util.Date;


public final class carro extends vehiculos {
    
     String  pdv = "pdv";
     float   Kilometros_pdv = 5000;
     /*------------------------------*/
     String  castrol = "castrol";
     float Kilometros_castrol = 10000;
     /*------------------------------*/
     String  shell_helix = "Shell_helix";
     float Kilometros_shell_helix = 7000;
    
    
    
    String AceiteMotor;
    String Refrigerante;
    String LigaFreno;
    String AceiteCaja;
    String AceiteDireccion;
    String Gasolina;
    String MarcaBateria;
    String tipoDireccion;
    float    litro;
    float  ultimoCambioAceite; 
    int    TipoRing;
    float  Kilometraje;
    float  presionCauchos;
    long   Ncilindros;
    boolean libreMantenimiento;
    
    
    // Constantes
  private final String TipoDireccion1 = "Hidraulica";
  private final String TipoDireccion2 = "Mecanica";  
    
    
    public carro(){
        super();
        AceiteMotor = "";
        Refrigerante = "";
        LigaFreno = "";
        AceiteCaja = "";
        AceiteDireccion = "";
        Gasolina = "";
        MarcaBateria = "";
        tipoDireccion = "";
        litro = (float)0.0;
        TipoRing = 0;
        Kilometraje = (float) 0.0;
        presionCauchos = (float) 0.0;
        Ncilindros = 0;
        libreMantenimiento = true; // Por ser Baterias Modernas
        ultimoCambioAceite = (float)0.0;
        
        
    }
    
    
    public carro(String aceiteMotor,String refrigerante,String ligafreno ,
                 String aceitecaja,String aceiteDireccion,String MacarBateria,float ultimocambioaceite,
                 float litro,int tiporing,float presioncauchos,String marca,
                 String gasolina,String tipoDireccion,int numerocilindros,
                 long catidadVehiculos ,float kilometraje,boolean tipoBateria ,String modelo,  
                 String serial, String tipo, String color, Date año){
        
        super(modelo,marca,serial,tipo,color,año);
        
        
        if(aceiteMotor != null && refrigerante != null && gasolina != null 
           && tipoDireccion != null && kilometraje > 0.0 && presioncauchos > 0.0 && ultimocambioaceite > 0.0){
            
                AceiteMotor  = aceiteMotor;
                AceiteCaja   = aceitecaja;
                Refrigerante = refrigerante;
                Kilometraje  = kilometraje;
                ultimoCambioAceite = ultimocambioaceite;
                
                this.TipoVehiculo = "carro";
                // Por ahora esta es la unica funcion desde las clases
                this.setStatus(this.statusAceite(Kilometraje, ultimocambioaceite, aceiteMotor));
                 
   
            }
        
        else{
                AceiteMotor  = "";
                AceiteCaja   = "";
                Refrigerante = "";
                Kilometraje  = (float)0.0;
                ultimoCambioAceite = (float) 0.0;
                
        }
                
    }
    
    
    public String getAceiteMotor(){
        return AceiteMotor;
        
    }
    
    public String getAceiteCaja(){
        return AceiteCaja;
    }
    
    public String getAceiteDireccion(){
        return AceiteDireccion;
    }
    
    public String getRefrigerante(){
        return this.Refrigerante;
    }
    
     public String getGasolina(){
        return Gasolina;
    }
     
      public String getMarcaBateria(){
        return MarcaBateria;
    }
      
      public String getLigaFreno(){
        return LigaFreno;
    }
      
      
       public String gettipoDireccion(){
        return tipoDireccion;
    }
      
      
       public float getLitros(){
        return litro;
    }
       
        public float getUltimocambioAceite(){
        return ultimoCambioAceite;
    }
    
    
     public float getKilometraje(){
        return Kilometraje;
    }
    
      public int getTipoRing(){
        return TipoRing;
    }
      
       public boolean getLibreMantenimient(){
        return libreMantenimiento;
    }
       
        public long getNcilindros(){
        return Ncilindros;
    }
         public float getPresionCauchos(){
        return presionCauchos;
    }
    
         // metodos SET
         
      public void setAceiteMotor(String aceite){
         this.AceiteMotor = aceite;
        
    }
    
    public void setAceiteCaja(String aceitecaja){
         this.AceiteCaja = aceitecaja;
    }
    
    public void setAceiteDireccion(String aceitedireccion){
        this.AceiteDireccion = aceitedireccion;
    }
    
    public void setRefrigerante(String refrig){
        this.Refrigerante = refrig;
    }
    
     public void setGasolina(String gasolina){
        this.Gasolina = gasolina;
    }
     
      public void setMarcaBateria(String bateria){
         this.MarcaBateria = bateria;
    }
      
      public void setLigaFreno(String lfrenos){
         this.LigaFreno = lfrenos;
    }
      
      
       public void settipoDireccion(String tdireccion){
         this.tipoDireccion = tdireccion;
    }
      
      
       public void setLitros(float litros){
        this.litro = litros;
    }
       
        public void setUltimocambioAceite(float ultimoCambioA){
         this.ultimoCambioAceite = ultimoCambioA;
    }
    
    
     public void setKilometraje(float kilometros){
        this.Kilometraje = kilometros;
    }
    
      public void setTipoRing(int tring){
         this.TipoRing = tring;
    }
      
       public void setLibreMantenimient(boolean libre){
         this.libreMantenimiento = libre;
    }
       
        public void setNcilindros(long ncilindros){
        this.Ncilindros = ncilindros;
    }
         public void setPresionCauchos(float pcauchos){
         this.presionCauchos = pcauchos;
    }    
         
    
    // Valor Normal = 0; valor Cerca Cambio = 1; Valor cambiar urgente = 2, valor = 99 ningun aceite registrado;
    public String statusAceite(float kilometrosActual, float kilometroCambio, String tipoAceite){
        
        String urgente = "URGENTE";
        String atencion = "ATENCION";
        String  normal = "NORMAL";
        String  nada  = "NO RECONOCIDO";
        
        float kilometroLocal = kilometrosActual - kilometroCambio;
        
                
        switch(tipoAceite)
        
        {
           
        case "pdv":
            
            if(kilometroLocal > Kilometros_pdv) 
                 return  urgente.toLowerCase();   
            else if(kilometroLocal < Kilometros_pdv)
                  return normal.toLowerCase();
                else if(kilometroLocal == Kilometros_pdv)
                  return  atencion.toLowerCase();
        break;
            
         case "Shell_helix":
              if(kilometroLocal == Kilometros_shell_helix)    
               return atencion.toLowerCase(); 
              else if(kilometroLocal <Kilometros_shell_helix )
                  return normal.toLowerCase();
                else if(kilometroLocal == Kilometros_shell_helix)
                  return  atencion.toLowerCase();
        break;
             
         case "castrol":
             if(kilometroLocal < Kilometros_castrol )    
               return normal.toLowerCase(); 
              else if(kilometroLocal < Kilometros_castrol)
                  return normal.toLowerCase();
                else if(kilometroLocal == Kilometros_castrol)
                  return  atencion.toLowerCase();
             
             break;
                      
        }
       
        
        return nada.toLowerCase();
       
    
}

    
    
}